還記得以前幫朋友過生日的時候都會去印一堆照片做照片牆,
但光是印照片就有夠麻煩、貼照片排形狀又很浪費時間(女生就喜歡麻煩),
難道沒有又快又方便的方法嗎!!
有喔~今天要來教大家用程式三秒生成愛心相片牆~
就算當天才想起來女朋友生日也來得及跑去超商印出來當卡片喔!
使用環境
程式碼
from PIL import Image
import os
import math
import inquirer
heart = [ # 幫你們標好一顆愛心
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1],
[1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,1],
[1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1],
[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],
[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1],
[1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1],
[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],
[1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1],
[1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1],
[1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
]
double_heart = [ # 幫你們標好兩顆愛心
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1],
[1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1],
[1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1],
[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1],
[1,1,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1],
[1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1],
[1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1],
[1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,1,1,1,1,1],
[1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,1,1,1,1,1],
[1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,1,0,1,1,1,1,1,1],
[1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,1,1,1],
[1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,1,1],
[1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,0,0,1,1],
[1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1],
[1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1],
[1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,1,1,1,1,1,1,0,0,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1],
]
img_dir = r"C:\Users\lala_chen\Desktop\img" # 改成你存圖片的資料夾路徑
imgs = [file for file in os.listdir(img_dir) if file.endswith((".img", ".png", ".jpg"))] # 指定抓取的檔案格式
img_h = img_w = 300 # 設定圖片的長寬
icon_dict = {
"heart": heart,
"double_heart": double_heart,
}
questions = [
inquirer.List('icon', message = "你要套用哪種圖案?", choices = icon_dict.keys()),
]
answers = inquirer.prompt(questions)
curr_icon = icon_dict[answers['icon']]
rows = len(curr_icon)
columns = len(curr_icon[0])
figure = Image.new("RGB", (img_w*columns, img_h*rows),"#FBEBEF") # 將圖片以外的背景設定成馬卡龍粉
count = 0
for i in range(len(curr_icon)):
for j in range(len(curr_icon[i])):
if curr_icon[i][j] == 1:
continue
else:
try:
image = Image.open(os.path.join(img_dir, imgs[count]))
except:
continue
image = image.resize((img_w, img_h))
figure.paste(image, (img_w*j, img_h*i))
count += 1
figure.show()
figure.save('國民女友_我堂姊.jpg') # 我堂姊超仙,可惜圖片太小了哭阿
成果發表會
一顆愛心
心心相印
你們看是不是有夠浪漫!!還可以跟女朋友說這是你一張一張慢慢排的!
保證女朋友以為你準備了很久(其實才三秒...)
但是你們可能會想說,難道一定要自己標記0,1嗎?這樣不是很花時間嗎??
下一篇會教怎麼樣讓程式幫你標記0,1,就不用自己手動標記了喔!
我還是第一次知道可以這樣做!!
假寫教學,真曬照片 (誤XD
偷偷告訴您 明天還會再曬一次喔><
啊不對 是後天
期待囉~ (?